﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Acamps.Framework.BancoDados;
using Acamps.Framework.Util;
using Acamps.Web.NegocioWeb;

namespace Acamps.Web.Administrativo
{
    public partial class CadastrarEmailEvangelho : System.Web.UI.Page
    {
        AcessoWeb acessoWeb = new AcessoWeb();
        const string perfilEvangelho = "#Perfil.EquipeEvangelho";
        const string perfilEquipe = "#Perfil.Equipe";

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                rptDados.DataSource = acessoWeb.NewsletterEvangelhoNegocioWeb.ListarNewsletterEvangelhos();
                rptDados.DataBind();
                lblMensagem.Visible = rptDados.Items.Count == 0;
                contexto();
            }

            if (Session["login"] != null)
            {
                var logado = (LoginUser)Session["login"];
                if (logado.Perfil.Referencia.ToUpper() == perfilEvangelho.ToUpper() ||
                    logado.Perfil.Referencia.ToUpper() == perfilEquipe.ToUpper())
                {
                    btnSalvar.Visible = true;
                    btnLimpar.Visible = true;
                    if (acessoWeb.EvangelhoNegocioWeb.VerificarEvangelhoDia())
                    {
                        btnEnviarEmail.Visible = true;    
                    }
                    else
                    {
                        lblSemEvangelho.Visible = true;
                    }
                }
            }
            else
            {
                Response.Redirect("../Default.aspx");
            }
        }

        private void contexto()
        {
            if (Request.QueryString["id"] != null)
            {
                hidEmail.Value = Request.QueryString["id"];
                Carregar();
            }
        }

        private void Carregar()
        {
            var email = acessoWeb.NewsletterEvangelhoNegocioWeb.RecuperarEmailNewsletter(Guid.Parse(hidEmail.Value));

            txtEmail.Text = email.Email;
        }

        protected void btnSalvar_OnClick(object sender, EventArgs e)
        {
            string mensagemFinal = "";
            NewsletterEvangelho newsletterEvangelho;

            if (hidEmail.Value == string.Empty)
            {
                newsletterEvangelho = new NewsletterEvangelho();
                CarregarObjetos(newsletterEvangelho);
                mensagemFinal = "Salvo";
            }
            else
            {
                newsletterEvangelho = acessoWeb.NewsletterEvangelhoNegocioWeb.RecuperarEmailNewsletter(Guid.Parse(hidEmail.Value));

                if (newsletterEvangelho == null)
                {
                    MensagemWeb.Show(new Mensagem("Não foi possivel encontrar o E-mail para Edição", true, new Exception()), this.Master);
                }
                else
                {
                    CarregarObjetos(newsletterEvangelho);
                    mensagemFinal = "Alterado";
                }
            }

            try
            {
                newsletterEvangelho = acessoWeb.NewsletterEvangelhoNegocioWeb.Salvar(newsletterEvangelho);
                hidEmail.Value = newsletterEvangelho.Id.ToString();
                MensagemWeb.Show(new Mensagem("Registro " + mensagemFinal + " com Sucesso.", false, null), this.Master);
            }
            catch (Exception ex)
            {
                MensagemWeb.Show(new Mensagem("O registro não pôde ser " + mensagemFinal, true, ex), this.Master);
            }
            rptDados.DataSource = acessoWeb.NewsletterEvangelhoNegocioWeb.ListarNewsletterEvangelhos();
            rptDados.DataBind();
            lblMensagem.Visible = rptDados.Items.Count == 0;
            Limpar();
        }

        private void CarregarObjetos(NewsletterEvangelho newsletterEvangelho)
        {
            newsletterEvangelho.Email = txtEmail.Text;
        }

        protected void btnLimpar_OnClick(object sender, EventArgs e)
        {
            Limpar();
        }

        private void Limpar()
        {
            txtEmail.Text = "";
            hidEmail.Value = "";
        }

        protected void btnEnviarEmail_OnClick(object sender, EventArgs e)
        {
            var evangelho = acessoWeb.EvangelhoNegocioWeb.RecuperarEvangelhoDia();
            bool feito = false;
            Exception ex1 = null;
            StringBuilder sb = new StringBuilder();
            sb.Append("<p>Bom dia amigo(a),</p>");
            sb.Append("<p>Segue o Evangelho de hoje</p>");
            sb.Append("<br/>");
            sb.Append("<p><b>" + evangelho.Titulo +"</b></p>");
            sb.Append("<p><b>" + evangelho.Leitura + "</b></p>");
            sb.Append("<p>"+ evangelho.Evangelho1 +"</p>");
            sb.Append("<br/>");
            sb.Append("<p><b>" + evangelho.ComentarioEvangelhoes.FirstOrDefault().TituloComentario + "</b></p>");
            sb.Append("<p><b>" + evangelho.ComentarioEvangelhoes.FirstOrDefault().LeituraComentario + "</b></p>");
            sb.Append("<p>" + evangelho.ComentarioEvangelhoes.FirstOrDefault().Comentario + "</p>");
            sb.Append("<p>________________________________</p>");
            sb.Append("<p>*Equipe AcampsDF*</p>");
            sb.Append("<p>acampsdf@acampsdf.com.br</p>");
            sb.Append("<p> http://www.acampsdf.com.br </p>");

            var emails = acessoWeb.NewsletterEvangelhoNegocioWeb.ListarNewsletterEvangelhos();

            foreach (var newsletterEvangelho in emails)
            {
                try
                {
                    Utilidades.EnviaMensagemEvangelho(newsletterEvangelho.Email, sb);
                    feito = true;
                }
                catch (Exception ex)
                {
                    feito = false;
                    ex1 = ex;
                    break;
                }
            }

            if (feito)
            {
                MensagemWeb.Show(new Mensagem("E-mail enviados com sucesso.", false, null), this.Master);
            }
            else
            {
                MensagemWeb.Show(new Mensagem("Problema ao enviar e-mails", false, ex1), this.Master);
            }
        }
    }
}